1. Field of the Invention
The present invention relates to field-programmable gate arrays (FPGAs) and to ways of programming them.
2. Background Art
Technological improvements in speed and density by featuring sub-nanosecond gate delays and multi-million gate capacities have propelled Field-Programmable Gate Arrays (FPGAs) to the forefront of modern design practice, and FPGAs are now the cornerstone of many hardware designs. FPGAs are customized by loading configuration data into their internal memory cells. Most of FPGA can be programmed an unlimited number of times and support system clock rates of up to 50 MHz (configuration of a one-million gates part could be done in less than 15 ms).
One associated problem is that existing components and methods of fast programming are passive (programming is done at power-up only) and require performing initial operations and further upgrades of configuration data at the factory. It would be desirable to find a way to re-program on-demand the FPGA and eventuality to redefine/reload configuration data, without any need of tool or any human intervention.
It would also be desirable to find a way to re-use a designed hardware platform for several applications (for example, all applications involving data manipulations like data parity computation, digital signatures of documents, cryptographic functions, . . . ), and to allow coexistence of those different applications on the same platform.
In addition, it would also be desirable to find a way to implement the heavy and complex functions hidden behind a targeted application into the smallest and slowest part possible. Isolating and partitioning supported functions into several independent smaller designs accessible and loadable at any time give the opportunity to downsize in a noticeable manner the size of the targeted FPGA.
For the foregoing reasons, there is a need for an improvement in the way that FPGAs are used in hardware platforms, for example, the one designed for redundant arrays of independent tapes (RAIT) application.